#ifndef NATIAVPARENTWIDGET_H
#define NATIAVPARENTWIDGET_H

#include "devcommon_global.h"

#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QDebug>
#include <QFrame>
#include <QStackedWidget>
#include <QThread>

QT_BEGIN_NAMESPACE
class QVBoxLayout;
class QHBoxLayout;
class QLabel;
class QPushButton;
QT_END_NAMESPACE

//　类对象引用
class NatiavWidget;
class ScanWidget;
class AntiVirusWork;
class ThreatsOPerationThread;

/*
@classname:(NatiavParentWidget)
@author：(mxz)
@discptions:(适度查杀的父页面，采用stack 展现主页和扫描页面)
@hirts:(继承)
@datatime:(05-23)
*/
class DEVCOMMONSHARED_EXPORT NatiavParentWidget : public QWidget
{
    Q_OBJECT
public:
    explicit NatiavParentWidget(AntiVirusWork *work, QWidget *parent = nullptr);
    ~NatiavParentWidget();
    // 扫描指定路径下的病毒
    void scanVirusByPath(QString sPath);

    // 获得病毒查杀当前页面
    int getCurrentPage();

    // 是否有没有处理的风险异常
    bool isThreats();

    void threatOperation();

    // 查杀为处理的异常文件
    void scanThreatsFiles();

    void setWork(AntiVirusWork *work);

    void setCurrentPage(int npage);

    // 获取病毒首页
    inline NatiavWidget *antiVirusHomeWidget() { return m_natiav; }
    // 获取扫描页面
    inline ScanWidget *scanWidget() { return m_scan; }
    // 删除扫描页
    void deleteScanWidget();
    // 扫描通过类型路径，路径和版本
    void scanByTypeAndPath(int nType, QString sPath, QString sVersion);

    Q_SLOT void onSendThreatsFileList(QString sendpath);
    Q_SLOT void onNotifyShowScan(int type, const QString &path, const QString &ver);
    Q_SLOT void onBackpage();
private:
    //初始化界面
    void initGUI();
    // 创建扫描页
    void initScanWidget();

signals:
    // 请求打开病毒查杀首页
    void notifyOpenAntiVirusHomePage();
    // 请求打开扫描页
    void notifyOpenScanVirusPage();
    // 获得病毒库版本
    void requestGetVdbVersion();

    // 右键扫描
    void onRightScan(QString sPath);

    // 更新扫描时间
    void onUpdateScanTime();

    void notifyGetThreatsFile();

private:
    QStackedWidget *m_stackWidget; // 站台
    ScanWidget *m_scan; // 扫描页面
    NatiavWidget *m_natiav; // 主页面
    AntiVirusWork *m_antivirusWork; // work
    QThread m_thread; // 线程
    ThreatsOPerationThread *m_threatOperation; // 异常处理线程
};

#endif // NATIAVPARENTWIDGET_H
